/******************************************************************************
 *
 * Project:		mGameEngine
 * File:		sceneframe.h
 * Author:		karooolek
 * Created on:	2009-04-09
 *
 ******************************************************************************/

#ifndef SCENEFRAME_H_
#define SCENEFRAME_H_

#include "frame.h"
#include "scene.h"

namespace mGameEngine
{
namespace Game
{

/**
 * Frame with single game scene.
 */
class SceneFrame : public Frame
{
protected:
	/**
	 * Frame game scene.
	 */
	Scene *_scene;

public:
	/**
	 * Create new game scene frame.
	 */
	SceneFrame();

	/**
	 * Create frame with specified game scene.
	 * @param scene game scene.
	 */
	SceneFrame(Scene *scene);

	/**
	 * Destroy game scene frame.
	 */
	virtual ~SceneFrame();

	/**
	 * Get frame game scene.
	 * @return frame game scene.
	 */
	Scene *getScene() const
	{
		return _scene;
	}

	/**
	 * Set frame game scene.
	 * @param scene game scene.
	 */
	void setScene(Scene *scene)
	{
		_scene = scene;
	}

	/**
	 * Begin game scene frame.
	 */
	virtual void begin();

	/**
	 * End game scene frame.
	 */
	virtual void end();

	/**
	 * Game scene frame main loop.
	 */
	virtual void idle();

	/**
	 * Game scene frame draw loop.
	 */
	virtual void draw() const;
};

}
}

#endif // SCENEFRAME_H_
